package com.itic.appbase.applications.sys.common.service;

import java.util.List;
import java.util.Map;

import com.itic.appbase.applications.sys.code.persistence.model.CodeDetail;
import com.itic.appbase.applications.sys.code.vo.CodeDetailVo;
import com.itic.appbase.applications.sys.org.persistence.model.Org;
import com.itic.appbase.applications.sys.region.persistence.model.Region;
import com.itic.appbase.applications.sys.resource.persistence.model.Resource;

public interface InnerCommonService {
    /**
     * 根据配置信息获取代码名称
     * 
     * @param obj
     * @param codeMap
     * @return
     */
    public Object getNameByCode(Object obj, Map<String, String> codeMap);

    /**
     * 获取代码表信息 </br>type :代码表类型，如T_DM_SEX </br>filterCode :需要过滤的代码
     * 
     * @param arg
     * @return
     */
    public List<CodeDetail> getCodeDetail(CodeDetailVo codeDetailVo);

    /**
     * 根据org(code/pCode/clazz)获取组织机构树
     * 
     * @param queryOrg
     * @return
     */
    public List<Org> getOrgTree(Org queryOrg);

    /**
     * 根据组织机构id/code获取组织机构对象
     * 
     * @param code
     * @return
     * @throws Exception
     */
    public Org getOrgByCode(String code);

    /**
     * 根据行政区划id查找行政区划
     * 
     * @param id
     * @return Region
     */
    public Region getRegionById(String id);

    /**
     * 获取行政区划list
     * 
     * @param region
     * @return
     */
    public List<Region> selectRegionList(Region region);

    /**
     * 根据用户id，查询用户所拥有的资源
     * 
     * @param userId
     * @return List<Resource>
     */
    public List<Resource> getResourceByUserId(String userId);

    /**
     * 根据url获取资源
     * 
     * @param url
     * @return Resource
     */
    public Resource getResourceByUrl(String url);

    /**
     * 根据url获得资源名称
     * 
     * @param url
     * @return resourceName
     */
    public String getResourceNameByUrl(String url);

    /**
     * 资源树
     * 
     * @param resource
     * @return
     */
    public List<Resource> resourceTree(Resource resource);

}
